﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace NthDownload.Contracts
{
    #region EventArgs

    public class NavigationRequestedEventArgs : EventArgs
    {
        public NavigationRequestedEventArgs(IViewModel viewModel, Action<IViewModel> shownCallback, bool fullscreen)
        {
            ViewModel = viewModel;
            ShownCallBack = shownCallback;
            Fullscreen = fullscreen;
        }

        public IViewModel ViewModel { get; set; }
        public Action<IViewModel> ShownCallBack { get; set; }
        public bool Fullscreen { get; set; }
    }

    #endregion EventArgs

    public interface INavigationService
    {
        event EventHandler<NavigationRequestedEventArgs> ShowRequested;
        event EventHandler<NavigationRequestedEventArgs> ShowDialogRequested;

        void Show(IViewModel viewModel);
        void Show(IViewModel viewModel, Action<IViewModel> shownCallback);
        ViewModelResults ShowDialog(IViewModel viewModel, bool fullscreen);
        ViewModelResults ShowDialog(IViewModel viewModel, Action<IViewModel> shownCallback, bool fullscreen);
    }
}
